package com.link.linkupjavaweb.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * 文件工具类
 */
public class FileUtils {
    
    /**
     * 保存上传的头像文件
     * @param file 上传的文件
     * @param uploadPath 上传路径（相对路径）
     * @return 文件访问路径
     */
    public static String saveAvatar(MultipartFile file, String uploadPath) throws IOException {
        if (file == null || file.isEmpty()) {
            return null;
        }
        
        // 获取原始文件名
        String originalFilename = file.getOriginalFilename();
        if (originalFilename == null) {
            return null;
        }
        
        // 获取文件扩展名
        String extension = "";
        int lastDotIndex = originalFilename.lastIndexOf(".");
        if (lastDotIndex > 0) {
            extension = originalFilename.substring(lastDotIndex);
        }
        
        // 生成新文件名（使用UUID避免重复）
        String newFileName = UUID.randomUUID().toString().replace("-", "") + extension;
        
        // 获取项目根目录路径
        String projectPath = System.getProperty("user.dir");
        
        // 创建完整的上传目录路径（项目根目录下的static/uploads/avatars/）
        File uploadDir = new File(projectPath, uploadPath);
        if (!uploadDir.exists()) {
            uploadDir.mkdirs();
        }
        
        // 保存文件
        File destFile = new File(uploadDir, newFileName);
        file.transferTo(destFile);
        
        // 返回Web访问路径
        return "/uploads/avatars/" + newFileName;
    }
    
    /**
     * 删除文件
     * @param filePath 文件路径
     */
    public static void deleteFile(String filePath) {
        if (filePath == null || filePath.isEmpty()) {
            return;
        }
        
        File file = new File(filePath);
        if (file.exists()) {
            file.delete();
        }
    }
}

